home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 1 Issue 2 / PDCD-1 - Issue 02.iso / _utilities / utilities / 001 / treemenu / !TreeMenu / History < prev    next >
Text File  |  1994-09-21  |  27KB  |  754 lines

  1.  
  2.     TreeMenu history:
  3.     =================
  4.  
  5.  
  6.  
  7.  
  8. See later in this file for a detailed description of the changes.
  9. Meanwhile...
  10.  
  11.  
  12.  
  13.  
  14.  
  15. A Potted History Of Released Versions Of TreeMenu.
  16. --------------------------------------------------
  17.  
  18.  
  19. DirMenu        1.20    May 12 1993
  20.  
  21. Bog standard. One configurable iconbar icon.
  22.  
  23.  
  24.  
  25. DirMenu        1.30
  26.  
  27. Can open iconbar menu on left hand side of screen.
  28. Added 'Help', 'Edit Configs' and 'Update' to normal iconbar menu.
  29.  
  30.  
  31.  
  32. DirMenu        2.21    18 July 1993
  33.  
  34. A few small bug fixes and enhancements.
  35. Can have multiple iconbar icons.
  36. Displays directories as applications in accordance with Jens Ovesons'
  37. FilerPatch.
  38. Detects <Alt>-Menu inside Filer windows, and Menu clicks on titlebar of
  39. Filer windows.
  40.  
  41.  
  42.  
  43. DirMenu        2.23    13 Aug 1993
  44.  
  45. Fixed a major bug which could crash the system when used with !Memphis.
  46. Cleaned up the Filer-titlebar code. Included an option to turn off Filer
  47. window titlebar clicks.
  48.  
  49.  
  50.  
  51. TreeMenu    2.70    21 Feb 1994
  52.  
  53. Included on Acorn User cover disc, July 1994.
  54. Put on hensa 21 Sep 1994
  55.  
  56. Detects Menu clicks on all windows, not just Filer windows.
  57. Copes with image filesystems now.
  58. Added 'Set CSD' option to window menus.
  59. Updated to cope with newer FilerPatch, plus a few enhancements.
  60. Can swap Select and Menu mouse buttons, and set CSD with <Alt>
  61. Made the menus auto-scrolling. I'm dead chuffed with this particular
  62. improvement...
  63.  
  64.  
  65. ************************************************************************
  66. ************************************************************************
  67.  
  68.  
  69. The latest version is:
  70.  
  71. TreeMenu    4.24    12 Sep 1994
  72.  
  73. Detects clicks on the pinboard and on disc drive icons.
  74. Handles directories with >77 files, e.g. NFS, and can go deeper than 8
  75. levels in the directory tree. 
  76. Can turn off FilerPatch compatibility.
  77. Copes properly with multiple path elements like 'System:' or 'Run:'.
  78. Allocates memory more efficiently and titlebar menus better behaved.
  79. Removed the 'Set CSD' option in titlebar menus.
  80. Added the '#' option to menu specifications.
  81. Speeded up generation of menus a little. 
  82. Can sort directories in different ways, including same as the Filer.
  83. 'TreeMenuHistory:#' in a specification string will retrieve the last few
  84.   choices made. Dead useful!
  85. Adjust clicks on NFS discs are detected.
  86. Made titlebar menus configurable
  87.  
  88. ************************************************************************
  89. ************************************************************************
  90. ************************************************************************
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99. Detailed History
  100. ----------------
  101.  
  102.  
  103.  
  104.  
  105. 0.00    July 1992
  106.  
  107. Stored the whole HD directory tree as a file and loaded it each time it was
  108. run. To update the tree, had to delete the file and run again. A bit crap,
  109. but I used it every day for months, and it saved a lot of time!
  110.  
  111.  
  112. 1.00    May 1993
  113.  
  114. Having seen !QuickDir by Clive Jones, I decided to provide menu-making on the
  115. fly as well, so the menu tree was always up-to-date. Also converted to
  116. DeskLib, which is superb. Added the configuable root menu featue.
  117.  
  118.  
  119. 1.10    May 5 1993
  120.  
  121. Now displays icons in the menus. Discovered that the Wimp sends a message
  122. with action code 0x400c9 when a menu is removed without a selection being
  123. made (e.g. a click off the menu). This is used to release all claims on
  124. further messages, which are detected when the menu is open in order to create
  125. new sub-menus when MENU_WARNING messages are sent by the WIMP.
  126.  
  127.  
  128. 1.20    May 12 1993 ** First release **
  129.  
  130. Added the Info/Quit menu. The Info box is my first ever dialogue box, and I
  131. don't know how to make it moveable like all other dialogue boxes I've seen.
  132.  
  133.  
  134. 1.21    May 24 1993
  135.  
  136. Added the options to open the root menu on the left hand side of the screen,
  137. as suggested by Kai Schlichting. Fixed a minor bug which resulted in a
  138. garbled title bar of the submenu of a '@' root item. I've now read the
  139. comp.sys.acorn Application Writer's Guide, so there is now no !Boot file, and
  140. I've found out how to make the Info window movable (process event_OPEN
  141. events).
  142.  
  143.  
  144. 1.30    ** Second release **
  145.  
  146. Added Help to normal menu. Added 'Edit Configs' and 'Update' to normal menu.
  147. These do a poor-man's implementation of a proper dialogue-box configuration
  148. setter/saver. If I had more time... Actually, you shouldn't want to change
  149. the configs very often, so this method isn't too bad. Changed the template
  150. file so that the program fills in the version/date when it is run.
  151.  
  152.  
  153. 1.31
  154.  
  155. Looks for File_0fb instead of File_fb, when searching for a file-type
  156. sprite when the file-type is < &100.
  157.  
  158.  
  159. 1.32
  160.  
  161. Compiled without function names in code, to make it slightly smaller.
  162.  
  163.  
  164. 1.40    20 June 1993
  165.  
  166. Can have multiple icons on the icon-bar, with independent root menus.
  167.  
  168.  
  169. 1.41
  170.  
  171. Can have text under the icons.
  172.  
  173.  
  174. 1.42    28 June 1993
  175.  
  176. If a directory has bit 6 of its Access atributes set, !DirMenu now displays
  177. it as an application (i.e. looks for a wimp sprite with same name). This is
  178. for compatability with FilerPatch, by Jens Ovesen.
  179.  
  180.  
  181. 1.43    4 July 1993
  182.  
  183. The WIMP doesn't seem to invert text+sprite icons in the same way as normal
  184. icons in menus, so I've padded all items with spaces, making highlighted
  185. icons in the menu easier to see.
  186.  
  187.  
  188. 2.00    11 July 1993
  189.  
  190. Now creates a menu for Filer windows, like !QuickDir. This is done by
  191. attaching a filter to the Filer which sends !DirMenu an event_CLICK when
  192. <Alt>-Menu is clicked on a filer window.
  193.  
  194.  
  195. 2.10    13 July 1993
  196.  
  197. Opens a menu when there is a menu-click on the filer window title bar. I
  198. think this is a lot more convenient than going to the keyboard to press
  199. <Alt>. Couldn't use a filter for this because menu-clicks on title bars don't
  200. seem to be passed on to apps by the Wimp. Hence had to make a module which
  201. claims OS (not Wimp) mouse button events, and sends event_CLICK's to DirMenu.
  202.  
  203.  
  204. 2.11    13 July 1993
  205.  
  206. Opens a Filer-window menu for both cases - menu on title bar, and
  207. <Alt>-Menu on workarea. !MakeMod makes a single module which acts as a
  208. filter on the Filer, and also catches mouse events.  I Couldn't use
  209. mouse-event-detector for the <Alt>-Menu case because the filer would
  210. flash open its menu just before DirMenu opens its menu.  !RunImage runs
  211. the Basic prog '!MakeMod' after it has initialised as a task. !MakeMod
  212. then assembles the module, called DirMenuMouse, assembling in the Filer
  213. and DirMenu task_handles. When DirMenu is quit, it RMKill's the module.
  214. Assembling a module every time DirMenu is run is a bit clumsy, but I am
  215. a new-comer to ARM assembler, so a module that actively finds the
  216. relevant task handles (like in !QuickDir) is a bit too advanced for me.
  217. My method makes for a smaller module anyway, and anyway Acorn have gone
  218. to the trouble of including an assembler on every machine, so I might as
  219. well take advantage of it!  I don't know of any way of preventing the
  220. Wimp from seeing a mouse click. This caused a few problems when making
  221. DirMenu respond to non-Wimp events from the module. Any suggestions ?
  222.  
  223.  
  224. 2.20    14 July 1993
  225.  
  226. Uses a simple Wimp_Poll loop instead of DeskLib's Event_ functions, which are
  227. a bit of a luxury in such a simple program. This makes !RunImage nearly 5k
  228. smaller. However, it still can't fit into a 32k wimpslot.
  229.  
  230.  
  231. 2.21    18 July 1993    *** third release ***
  232.  
  233. Can set DirMenu to expand all system variables in file-paths prior to
  234. Filer_Run-ing them. This is for when iconbar icons are specified to use
  235. system variables such as <Wimp$ScrapDir> or @. It makes file/application
  236. windows contain the full path name of the files that are clicked on. This
  237. just uses SWI "OS_FSControl" with r0=37.
  238.  
  239.  
  240. 2.22    27 July 1993
  241.  
  242. Oh dear! The click-on-Filer-titlebar thing seems to be a bit wobbly. Changes:
  243. 1.    Detects true menu button click i.e. buttons 000 -> 010, rather than
  244.     xxx -> y1y.
  245. 2.    When opening a Filer-window menu, the main program now rechecks that
  246.     the pointer is over a titlebar, as a drag closely followed by a menu
  247.     click on a workarea seem to result in Wimp_GetPointerInfo returning
  248.     the poition of the start of the drag i.e. a titlebar. This resulted
  249.     in spurious menu opening sometimes. Unfortunately, if you now move
  250.     the pointer away from a titlebar very quickly after clicking menu,
  251.     this modification may mean that DirMenu won't open a menu.
  252. 3.    In !MakeMod, changed SWI calls to have 'X' bit set, and return if the
  253.     SWI signals an error. The normal OS default error handling can give a
  254.     horrid crash when using MemFS's non-multitasking 'free' window. I
  255.     don't think this is my fault, as the OS error handling should cope
  256.     with errors, and the SWI was Wimp_GetPointerInfo - hardly a
  257.     complicated system-altering one. There was no problem with other
  258.     non-multitasking windows.
  259.  
  260. Thanks to Kai Schlichting for noticing these problems.
  261.  
  262.  
  263. 2.23    13 Aug 1993    *** fourth release ***
  264.  
  265. Mr Schlichting still gets spurious menus, and I'm a bit stumped by them. I
  266. think part of the the problem is something to do with Wimp_GetPointerInfo
  267. returning an out-of-date old mouse position just after a drag has taken
  268. place, leading to DirMenu being told that a click occured on a title bar,
  269. when it didn't. You can now make DirMenu only respond to <Alt>-Menu
  270. clicks in a filer window, by altering 'Configs'. This removes the
  271. low-level code from DirMenu's module. The two tiny Obey files 'TBar' and
  272. 'NoTBar' are needed because Filer_Run doesn't allow you to send
  273. parameters to whatever it is you're Filer_Run-ing.
  274.  
  275.  
  276. 2.24    16 Aug 1993
  277.  
  278. Copes with different Access bit used by Filer+ 1.13. Doesn't search for
  279. #<spritename> etc yet.
  280.  
  281.  
  282. 2.25    5 Sep 1993
  283.  
  284. A few small improvements:
  285.  
  286. 1.    Treats image filesystems as directories, allowing you to look inside
  287.     them, assuming ArcFS (or similar) is running. The old read-only ArcFS
  288.     didn't support this, so I couldn't do it until now.
  289. 2.    Now shows correct Filer+ sprites in the top half of the Filer-window
  290.     menu.
  291. 3.    Objects which are hidden by Filer+ ( because bit 6 of attributes is
  292.     set) are displayed with fainter text, but are still
  293.     selectable.
  294.  
  295.  
  296. 2.30    6 Sep 1993
  297.  
  298. Displays sprites like #<name> etc. for directories, applications and images,
  299. according to the precedence rules used by Jens Ovesen's Filer+ 1.14.
  300.  
  301.  
  302. 2.40    20 Sep 1993
  303.  
  304. Responds to Menu clicks on any window, such as an !Edit or !Paint window.
  305. DirMenu uses Wimp_TransferBlock to read the (indirected) title of the window,
  306. as it will typically be stored in another applications workspace. If the
  307. initial part of the window title is a filename (i.e. most of the time),
  308. DirMenu will display the contents of the directory belonging to the file,
  309. otherwise it will be a directory, so DirMenu will display the contents of
  310. this directory. If the window contains more than about 100 icons, DirMenu
  311. will crash. This is because the SWI which finds the title of a window
  312. (Wimp_GetWindowInfo) also returns all the icons in the window, and there is
  313. no way of telling how many of these there are so you can't garantee there
  314. will be enough space reserved... It seems crazy to me that there isn't an SWI
  315. which returns a window's info *without* its icons. Please let me know if
  316. there is (a RISC OS 3?) one that I haven't heard of.
  317.  
  318. Another problem occurs when Menu is clicked on the title of a Zap window. Zap
  319. seems to store only the visible part of the window title, in order to
  320. implement custom justification where the leaf of the path is always visible.
  321. This means that DirMenu will sometimes only get part of the path when Menu is
  322. clicked on a Zap window.
  323.  
  324. As usual, you can alter Configs so that these clicks are ignored, if you find
  325. these bugs a  problem. On the other hand, if you know of any solutions to
  326. them, please tell me!
  327.  
  328. I've got rid of the Obey files 'TBar' and 'NoTBar', because there are now
  329. too many options to send to the Module-maker !MakeMod. I now use the system
  330. variable 'DirMenu$Options' to pass the parameters to !MakeMod.
  331.  
  332.  
  333. 2.41    22 Sep 1993
  334.  
  335. OS_File (with r0 = 5) should return 0 in r0 if a file doesn't exist, but
  336. sometimes it just gives an SWI error, so DirMenu now looks at the SWI error
  337. flag before accepting a window title as a valid pathname. Previously,
  338. Menu-clicking on a Zap window could make DirMenu open stupid menus. Also
  339. explicitly closes any existing menu, using Wimp_CreateMenu with r1=-1, when a
  340. title-bar click is detected, instead of waiting for the Wimp to do it. I
  341. thought this might save a little time on slow machines.
  342.  
  343.  
  344. 2.42    29 Oct 1993
  345.  
  346. DirMenu quits with an error message if it finds it has tried to get title of
  347. a window with more than 100 icons. This is because some of DirMenu's memory
  348. will certainly have been overwritten, and this could have unpleasant
  349. consequences if ignored.
  350.  
  351.  
  352. 2.50    29 Oct 1993
  353.  
  354. Can have a 'Set CSD' item in a window menu
  355.  
  356.  
  357. 2.51    31 Oct 1993
  358.  
  359. Can force a 'Set CSD' item to appear by holding down <Shift> while Menu
  360. clicking on the titlebar of a window.
  361.  
  362.  
  363. 2.52    11 Nov 1993
  364.  
  365. Uses modified RO3 version of Wimp_GetWindowInfo, which ignores any icons in
  366. the window. Hence DirMenu doesn't quit if you click on a window with > 100
  367. icons. Thanks to Clive Jones and Erik de Kort for telling me about this. (the
  368. trick is to set bit 0 of R1 when calling Wimp_GetWindowInfo. R1 points to the
  369. block of memory reserved for the window information, which is word aligned so
  370. the bottom 2 bits are unused). Also stopped the closing of existing menus
  371. (see v. 2.41) as I think this was giving strange 'Unknown OS_Module call'
  372. errors.
  373.  
  374.  
  375. 2.53    18 Jan 1994
  376.  
  377. Improved the error handling when an item in an icon-bar menu was incorrectly
  378. specified as (for e.g.) "DeskLib: *" instead of "DeskLib:*"
  379.  
  380.  
  381. 2.60    2 Feb 1994
  382.  
  383. Tidied upáthe code generaly.
  384. Called 'TreeMenu' now. Albert Koelmans at the newcastle server stored it
  385. under this name, and it sounds better that 'Dir(e) menu'!
  386. I tried to make the menus auto-scrolling, but failed miserably -Menus behave
  387. like normal windows, but don't seem to respond to wimp messages. Also, they
  388. don't seem to have a valid taskhandle
  389. Changed to the format of the 'Configs' file, so that the help comments don't
  390. take up so much space, and renamed it '!Configs'.
  391.  
  392.  
  393. 2.62    14 Feb 1994
  394.  
  395. I've just bought the PRM's  8) and found that when you have finished claiming
  396. an event, you should call OS_Byte 13, *then* OS_Release. (I used to do it the
  397. other way round.
  398. Added the 'reverse mouse button' option, and the 'Set CSD with <Alt>. These
  399. were both requested by Dennis Howe ages ago, but I've only just got round to
  400. them.
  401. !TreeMenu now tells you if an error occurred from the 'Filer_Run ...' or
  402. 'Dir ...' command. This is useful if you try to set the CSD to a file.
  403.  
  404.  
  405. 2.70    21 Feb 1994
  406.  
  407. Finally managed to make the menus auto-scrolling.
  408. The WIMP seems to use OS_Mouse to read the pointer position/button state,
  409. so I tried intercepting this SWI, and returning a bogus click. This worked,
  410. but requires a separate module with a SWI, and would involve coding a
  411. buffer in order to fake button press + buton release. The solution I now
  412. use is to add mouse events into OS_Mouse's buffer, using OS_Byte 138. The
  413. PRM's say this isn't recommended, but if you must do this, you should
  414. disable events while you are writing to the buffer (which I do), in case
  415. a real mouse event (e.g. the user clicking) arrives when you are in the
  416. middle of adding bytes to the buffer. I'm not quite sure why this is not
  417. reccomended, and I'm fairly certain there isn't a cleaner way. Anyway,
  418. it all seems to work OK. The scrolling isn't very smooth, and has only 2
  419. speeds, but is still very useful.
  420.  
  421.  
  422. 2.80    22-Jun-1994
  423.  
  424. Cleaned up code a bit.
  425. Changed !MakeMod and TreeMenu so that adjust-clicks on disc icons are
  426. detected and open up a menu. This only works for ADFS disc at the mo.
  427.  
  428.  
  429. 2.90    23-Jun-1994
  430.  
  431. Now detects Adjust clicks on pinboard. Adjust clicks on icons are
  432. ignored so that so can still select/deselect pinboard icons.
  433. Adjust-Dragging on the pinboard is a little tricky, because TreeMenu
  434. opens up a menu, but Esc gets rid of it.
  435.  
  436. 2.91    23-Jun-1994
  437.  
  438. Got rid of some of the separaters in menus - these make some menus a bit
  439. big. Only items which include the first level contents have separaters
  440. above and below.
  441.  
  442.  
  443. 3.00    24-Jun-1994
  444.  
  445. Should handle SCSI, ADFS and IDEFS disc drives now (I've only got ADFS
  446. so can't check the others.). You can choose whether to look at disc
  447. drives or the pinboard now.
  448.  
  449. Cleaned up TreeMenuMouse a bit. It now puts some extra info in word 5 of
  450. the event_CLICK pollblock, which tells the main program what sort of
  451. click it is - window titlebar, Pinboard, Filer-<Alt>-click, ADFS disc,
  452. SCSI disc, IDE disc, etc. Previously, the main application looked at
  453. what application was under the pointer, which part of the window the
  454. pointer was over etc, which got a bit messy when clicks started coming
  455. from disc icons and the pinboard.
  456.  
  457. Got rid of the option to only make titlebar menus for Filer windows.
  458. This was only there because of the problem of getting window info
  459. without info on the window icons, which was cured ages ago.
  460.  
  461.  
  462. 3.01    24-Jun-1994
  463.  
  464. <Alt>-Adjust clicks on pinboard are detected even if they are over an
  465. icon.
  466.  
  467.  
  468. 3.10    05 Jul 1994
  469.  
  470. Handles directories with arbitary number of files - not limited to 77
  471. files per directory. Done this by using OS_GBPB r0=9 to find space
  472. required for the filenames, then using this to calculate buffer size
  473. needed for OS_GBPB r0=10.
  474.  
  475. Discovered that !ArcFS needs some extra buffer-space when asked to
  476. return the contents of an archive directory, so have added 256 bytes to
  477. the calculated buffer size.
  478.  
  479. Made TreeMenu sort directory contents by name when the filing system is
  480. 'NFS::', as unix systems via NFS gives unsorted directory contents.
  481.  
  482.  
  483. 3.20    06 Jul 1994
  484.  
  485. Can go deeper than 8 menus. When the 8th submenu is opened, it is
  486. coloured differently. If you move to a submenu from the 8th menu, a
  487. completely new menu is created, which is similar to the menu created
  488. when you click on a titlebar.
  489.  
  490.  
  491. 3.21    06 Jul 1994
  492.  
  493. Can turn off FilerPatch compatibility.
  494.  
  495.  
  496. 3.22    07 Jul 1994
  497.  
  498. When a menu is opened by clicking on an editor-window's titlebar, the
  499. item in the directory corresponding to the editor-window is coloured
  500. red, so you know which one it is.
  501.  
  502. Changed !MakeMod so that all filter code preserves r0-r12. Previously,
  503. only r0-r1 were preserved. Someone was having problems with !DeskTop+,
  504. where outline-font file icons weren't redrawn properly when
  505. adjust-clicked. !MakeMod corrupted r2 in this case, which might be the
  506. cause... Anyway, the PRMs say filter code should preserve all registers.
  507.  
  508.  
  509. 3.23    13 Jul 1994
  510.  
  511. Fixed a bug in the SCSIFS/IDEFS part, and added support for CDROM.
  512.  
  513.  
  514.  
  515. 3.24    16 Jul 1994
  516.  
  517. Changed SCSIFS: to SCSI: when pathnames are formed after a click on a
  518. SCSI drive.
  519.  
  520. Made the drive-adjustclick work even if the drive icon's text isn't
  521. indirected.
  522.  
  523. If a discname gives an error from OS_GBPB, the error message is put into
  524. a faded menu item, instead of just 'Error'. e.g. this gives a menu with
  525. the single faded item 'Drive empty' if you click on the floppy icon
  526. while no disc is present.
  527.  
  528. Made titlebar menus open the standard 64 pixels to the left, instead of
  529. 128 (yep, 128 = 64+64 ...).
  530.  
  531. Mostly cured the problem where a normal window could jump across the
  532. screen when (for e.g.) Menu on a full-size text window, then Select
  533. click on the same window's title bar. This was caused by TreeMenu
  534. thinking the normal window was a menu window, and sending it clicks etc.
  535. The problem is not 100% cured as it is difficult to tell for sure
  536. whether a window is a menu window. I check for lots of flags including
  537. vscroll and no hscroll and no size icon, which should cope most of the
  538. time.
  539.  
  540.  
  541. 3.30    17 Jul 1994
  542.  
  543. Paths like 'System:' or 'Run:' are expanded into <System$Path> etc, and
  544. the separate elements of these comma-separated lists of paths are all
  545. displayed, separated by menu-separators. Hence if you put 'System:', you
  546. can look at the whole system path, rather than just the first one. The
  547. paths are also dealt with recursively, so that if System$Path =
  548. 'System_Real:', then System_Real$Path is expanded.
  549.  
  550. Actually, this doesn't work correctly...
  551.  
  552. Opens hourglass when making menu for a directory.
  553.  
  554.  
  555. 3.31    17 Jul 1994
  556.  
  557. Added option to sort any directories which have any item with name
  558. longer than 10 chrs. This is to aid use with !LongFiles, which allows
  559. long filenames, but results in badly-sorted directory lists (because
  560. the longfiles are actually stored using a standard name+number. Also
  561. made NFS sorting optional.
  562.  
  563. Made the sorting case-insensitive.
  564.  
  565.  
  566. 3.32    19 Jul 1994
  567.  
  568. Changed !MakeMod so that the task name of the CD filing system is
  569. 'CDFS Filer'.
  570.  
  571.  
  572.  
  573.  
  574. 4.00    07 Aug 1994
  575.  
  576. Functionally pretty much the same as the last version, but radically
  577. rewritten, hence the version number.
  578.  
  579. Main reason for changes is to prepare for converting TreeMenu into a
  580. module which can make treemenus for any application via a SWI interface,
  581. make the memory allocation more efficient, and deal with ...$Path
  582. variables properly.
  583.  
  584. Allocates memory in a more efficient way which copes a lot better with
  585. large menus which contain more than one directory's contents. I've
  586. also written my own small routine to load the Info window from the
  587. template, which saves a few k compared to using DeskLib's Window_Create.
  588.  
  589. Added another option to path specifications in 'Choices': if you append
  590. a '#' to an item in 'Choices' (&| a '*'), the elements of the parent
  591. path will be displayed on separate lines, as in titlebar menus. If you
  592. don't append a '#', the display is as before, with one long line.
  593. Internally, TreeMenu uses the '#' to open a titlebar menu, rather than
  594. having special code.
  595.  
  596. Displays multiple paths correctly now, such as 'system:'. If you append
  597. a '*' or '#' to an item like 'System:', these will effect the
  598. first submenu which has the multiple directories in 'System$Path',
  599. rather than the inital item, which will always be un-expanded if it is a
  600. ...$Path varible. Coping with ...$Path was difficult!
  601.  
  602. Slightly changed the format of !Configs, and renamed to 'Choices' to
  603. conform to the Acorn Style Guide.
  604.  
  605. Titlebar menus are much better behaved now - before, they wouldn't open
  606. if a treemenu was already open for example. I now open titlebar menus in
  607. response to menu button *release*, to avoid conflicts with the wimp.
  608.  
  609. Fixed a bug which sometimes used the wrong sprite for archives.
  610.  
  611. Removed the option to reverse Menu and Select clicks on TreeMenu iconbar
  612. menus.
  613.  
  614. Uses a 'small_disc' sprite for root parent items, and a small-ed 'cd'
  615. sprite for CDFS:: items. I've put 'small_disc' into !Sprites(22), which
  616. isn't really PC as it gets loaded into the wimp sprite area, but is a
  617. lot simpler than creating my own sprite area for one sprite. NB using
  618. the existing 'harddisc' small-ed doesn't work very well as it is too
  619. wide.
  620.  
  621. Things not implemented yet: 'Set CSD' item in titlebar menus. Alt-select
  622. still selects the CSD, so this option is less needed.
  623.  
  624. Changed all path arrays to be 256 chrs long, rather than 80
  625. (FILENAME_MAX in Desktop C's <stdio.h> is 80). Also checks that paths
  626. don't go over this limit.
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633. 4.10    13 Aug 1994
  634.  
  635. Improved the code to make it find directory contents faster and reduce
  636. code size. The old method rather stupidly called OS_GBPB twice, once for
  637. the item names, once for the types 'cos of the memory saving I needed to
  638. do to stop the wimpslot going to 96k for things like Run:*#. Found a way
  639. of avoiding this.
  640.  
  641. Got rid of the option to not pad menu items. Items are always padded.
  642.  
  643. Holding down <Shift> while making a new submenu makes a completely new menu.
  644. Holding down <Ctrl> while making a new submenu makes a submenu without
  645. any sprites. This is slightly faster.
  646.  
  647. Made TreeMenu store the last filetype spritename, and checks whether a
  648. file is the same type as the last file displayed. If so, don't need to
  649. check the sprite exists etc, just use the same name as before. This has
  650. a noticable speed increase when opening directorys full of one sort of
  651. file, which is quite a common occurrence.
  652.  
  653. version 4.10 opens my Run:*# in ~2.15 sec, version 4.00 took around 2.55
  654. sec.
  655.  
  656. Resources:$ is stupid! OS_GBPB returns offset=-1 when you've got all
  657. items in a directory, but never does this for resource:$ the first time
  658. you call it. Hence you always have to call it at least 2 times, which is
  659. really slow - the second time seems to be just as slow as the first
  660. time. Have got around this by assuming all the dir has been received if
  661. there are more than 256 bytes left in the buffer sent to OS_GBPB. This
  662. makes things a bit faster when looking in Resources:$
  663.  
  664. The module ImageFSFix interacts with FilerPatch to stop OS_GBPB behaving
  665. properly - e.g. not returning an error for non-existent directories
  666. (this used to crash TreeMenu, as it would think there were 4096 items to
  667. deal with when the buffer was in fact empty). Have detected these
  668. situations and made TreeMenu show a faded 'OS_GBPB problem' for these
  669. menu items.
  670.  
  671.  
  672.  
  673. 4.11    17 Aug 1994
  674.  
  675. Changed Templates so that the infowindow doesn't return clicks.
  676.  
  677. Looks for small_xxx rather than sm_xxx.
  678.  
  679. Re-added the option to not pad items, as padded items look wrong on the
  680. RiscPC.
  681.  
  682. Changed MakeMod so that 'Larger' is used as the pinboard task if
  683. 'Pinboard' isn't running. Don't know whether this works though, as I
  684. don't use Larger...
  685.  
  686.  
  687.  
  688. 4.20    19 Aug 1994
  689.  
  690. Can sort according to the current Filer option (stored in the CMOS ram),
  691. or by name, type, size or date, or even no sorting ar all. The only
  692. problem is that the filer dates applications' by their !RunImage, which
  693. TreeMenu doesn't do (yet). The sorting is sometimes slightly different
  694. from the Filer's for image directories which TreeMenu puts with normal
  695. directories, but the Filer treats as files. I'll change this if anyone
  696. is bothered by it...
  697.  
  698. Removed the options to sort NFS and longfilenames; all directories are
  699. sorted according to 'Choices'.
  700.  
  701. Stopped Adjust click on iconbar icons opening the Info...Quit menu.
  702.  
  703. Added options to change the pointer shape when over treemenu icons, and
  704. also to make iconbar icons have a 'menu' button type. These aren't much
  705. use...
  706.  
  707. Made TreeMenu prepend each chosen path to the system variable 'TreeMenuHistory$Path'. Hence you can put 'TreeMenuHistory:#' into an icon's menu specification to get easy access to the last few choices made with TreeMenu. Sys vars have limited length (<256), so this will only store a few past choices.
  708.  
  709. Added another item in 'Choices' which specifies an extra distance to the
  710. left that menus are opened at. TreeMenus normally have sprites on the
  711. left, so the normal 64 OS units is not really enough.
  712.  
  713. Made error parent items not occasionaly have submenu arrows.
  714.  
  715. Made all menu titles indirected, so that they can be longer than 10 chrs.
  716.  
  717. Changed the implemention of history. You set the size of an internal
  718. buffer in Choices, and TreeMenu uses this buffer whenever you put
  719. 'TreeMenuHistory:' in a menu specification. This was done because the
  720. 256 chr limit for system variables was quite a limitation.
  721.  
  722. Improved icons in mutiple-path menus, eg. '@', '<...>', '...:' have
  723. disc-drive icons.
  724.  
  725.  
  726.  
  727.  
  728. 4.21    24 Aug 1994
  729.  
  730. Made the titlebar menu be configurable. Put '%s#*' to include the
  731. titlebar filename. (Yep, I'm using sprintf( ...)).
  732.  
  733.  
  734.  
  735. 4.22    27 Aug 1994
  736.  
  737. Fixed a bug which sometimes displayed archives as file_000
  738. Added support for adjust clicks on NFS filer icons on the iconbar.
  739.  
  740.  
  741.  
  742. 4.23    07 Sep 1994
  743.  
  744. Made small_xxx be looked for even for filerpatch-style display...
  745.  
  746. Fixed bug in MakeMod where drive clicks weren't checked for being on the
  747. iconbar.
  748.  
  749.  
  750. 4.24    12 Sep 1994
  751.  
  752. Seem to be sent bogus clicks sometimes with window handle = 0, when an
  753. icon is cliked on just as TreeMenu is starting. Now detect this and
  754. ignore.